package Pet.Management.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class DatabaseInitializer implements CommandLineRunner {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void run(String... args) throws Exception {
        System.out.println("初始化数据...");
        
        try {
            // 确保数据库存在
            jdbcTemplate.execute("CREATE DATABASE IF NOT EXISTS pet_management");
            jdbcTemplate.execute("USE pet_management");
            
            // 检查数据表是否存在
            boolean tablesExist = checkIfTablesExist();
            
            if (tablesExist) {
                System.out.println("数据表已存在，仅插入测试数据...");
                
                // 插入标签数据，如果没有的话
                int tagCount = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM community_tag", Integer.class);
                if (tagCount == 0) {
                    jdbcTemplate.execute("INSERT INTO community_tag (name) VALUES " +
                        "('宠物饲养'), ('健康医疗'), ('训练技巧'), ('宠物故事'), ('求助问答'), ('宠物用品'), ('领养寻宠')");
                }
                
                // 插入测试帖子，如果没有的话
                int postCount = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM community_post", Integer.class);
                if (postCount == 0) {
                    jdbcTemplate.execute("INSERT INTO community_post (title, content, user_id, view_count, like_count, favorite_count, comment_count) VALUES " +
                        "('如何正确饲养金毛犬', '金毛犬是一种非常温顺、聪明的犬种，适合家庭饲养。以下是我分享的金毛犬饲养要点：1. 饮食：每天定时定量喂食，成年金毛每天需要2-3餐；2. 运动：每天至少需要30分钟的运动量；3. 毛发护理：每周需要刷毛2-3次；4. 健康检查：定期接种疫苗，每半年体检一次。', 3, 120, 25, 10, 8), " +
                        "('猫咪感冒了怎么办？', '最近天气变化大，我家猫咪似乎感冒了，症状有打喷嚏、流鼻涕。请问有经验的铲屎官们，猫咪感冒了该如何护理？需要马上去宠物医院吗？有什么居家护理的建议吗？', 4, 85, 15, 5, 12), " +
                        "('寻狗启示：黑色拉布拉多走失', '我家黑色拉布拉多昨天在市中心公园附近走失，项圈是红色的，脖子上有一个银色吊牌。非常焦急，有看到的朋友请联系我，必有重谢！', 5, 200, 30, 20, 15)");
                
                    // 关联帖子和标签
                    jdbcTemplate.execute("INSERT INTO community_post_tag (post_id, tag_id) VALUES " +
                        "(1, 1), (1, 3), " +
                        "(2, 2), " +
                        "(3, 7)");
                }
            }
            
            System.out.println("数据初始化完成！");
        } catch (Exception e) {
            System.out.println("初始化数据出错：" + e.getMessage());
            e.printStackTrace();
        }
    }
    
    private boolean checkIfTablesExist() {
        try {
            // 检查community_post表是否存在
            jdbcTemplate.queryForObject("SELECT 1 FROM community_post LIMIT 1", Integer.class);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
} 